package br.com.trophy.database;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DataBaseManager extends SQLiteOpenHelper
{
	// ----------------------------------------------------------------------------------------
	// Atributos e constantes
	// ----------------------------------------------------------------------------------------
	private static final String DATABASE_NAME = "trophy.s3db";
	private static int DATABASE_VERSION = 1;

	private static SQLiteDatabase database;
	private static ContentValues cv;

	private static final String SQL_CREATE_TABLE_GAMES = "CREATE TABLE IF NOT EXISTS [games] ( "
			+ "[id] INTEGER  NOT NULL PRIMARY KEY AUTOINCREMENT,"
			+ "[name] TEXT  NOT NULL,"
			+ "[category] TEXT  NULL,"
			+ "[year] TEXT  NULL," + "[publisher] TEXT  NULL)";

	private static final String SQL_CREATE_TABLE_TROPHIES = "CREATE TABLE IF NOT EXISTS [trophies] ( "
			+ "[id] INTEGER  NOT NULL PRIMARY KEY AUTOINCREMENT,"
			+ "[id_game] INTEGER  NOT NULL,"
			+ "[number] INTEGER  NOT NULL,"
			+ "[name] TEXT  NOT NULL,"
			+ "[type] TEXT  NULL,"
			+ "[description] TEXT  NULL," + "[tip] TEXT  NULL)";

	private static final String SQL_DELETE_TABLE_TROPHIES = "DROP TABLE IF EXISTS trophies";
	private static final String SQL_DELETE_TABLE_GAMES = "DROP TABLE IF EXISTS games";

	// ----------------------------------------------------------------------------------------
	// Construtor
	// ----------------------------------------------------------------------------------------
	public DataBaseManager( Context context )
	{
		super( context, DATABASE_NAME, null, DATABASE_VERSION );

		// Instancia objetos de classe
		database = context.openOrCreateDatabase( DATABASE_NAME,
				Context.MODE_PRIVATE, null );
		cv = new ContentValues();

		// Criando as tabelas
		database.execSQL( SQL_CREATE_TABLE_GAMES );
		database.execSQL( SQL_CREATE_TABLE_TROPHIES );
	}

	// ----------------------------------------------------------------------------------------
	// Metodos publicos
	// ----------------------------------------------------------------------------------------
	@Override
	public void onCreate( SQLiteDatabase db )
	{
		database.execSQL( SQL_CREATE_TABLE_GAMES );
		database.execSQL( SQL_CREATE_TABLE_TROPHIES );
	}

	// ----------------------------------------------------------------------------------------
	@Override
	public void onUpgrade( SQLiteDatabase db, int oldVersion, int newVersion )
	{
		database.execSQL( SQL_DELETE_TABLE_GAMES );
		database.execSQL( SQL_DELETE_TABLE_TROPHIES );
		onCreate( database );
	}

	// ----------------------------------------------------------------------------------------
//	public void insert( GameBean bean )
//	{
//		cv.put( bean.getCOLUMN_CATEGORY(), bean.getCategory() );
//		cv.put( bean.getCOLUMN_NAME(), bean.getName() );
//		cv.put( bean.getCOLUMN_PUBLISHER(), bean.getPublisher() );
//		cv.put( bean.getCOLUMN_YEAR(), bean.getYear() );
//
//		database.insert( bean.getTABLE_NAME(), bean.getCOLUMN_CATEGORY(), cv );
//	}

	// ----------------------------------------------------------------------------------------
//	public void update( GameBean bean )
//	{
//		cv.put( bean.getCOLUMN_CATEGORY(), bean.getCategory() );
//		cv.put( bean.getCOLUMN_NAME(), bean.getName() );
//		cv.put( bean.getCOLUMN_PUBLISHER(), bean.getPublisher() );
//		cv.put( bean.getCOLUMN_YEAR(), bean.getYear() );
//
//		database.update( bean.getTABLE_NAME(), cv,
//				"name=?" + bean.getName(),  new String[]{bean.getName()} );
//	}

	// ----------------------------------------------------------------------------------------
//	public void update( TrophyBean bean )
//	{
//		cv.put( bean.getColumnIdGame(), bean.getIdGame() );
//		cv.put( bean.getColumnNumber(), bean.getNumber() );
//		cv.put( bean.getColumnName(), bean.getName() );
//		cv.put( bean.getColumnType(), bean.getType() );
//		cv.put( bean.getColumnDescription(), bean.getDescription() );
//		cv.put( bean.getColumnTip(), bean.getTip() ); 
//		
//		database.update(bean.getTableName(), cv, "name=?", new String[]{bean.getName()});
//	}

	// ----------------------------------------------------------------------------------------
//	public void insert( TrophyBean bean )
//	{
//		cv.put( bean.getColumnIdGame(), bean.getIdGame() ); 
//		cv.put( bean.getColumnNumber(), bean.getNumber() );
//		cv.put( bean.getColumnName(), bean.getName() );
//		cv.put( bean.getColumnType(), bean.getType() );
//		cv.put( bean.getColumnDescription(), bean.getDescription() );
//		cv.put( bean.getColumnTip(), bean.getTip() );
//
//		database.insert( bean.getTableName(), bean.getColumnIdGame(), cv );
//	}

	// ----------------------------------------------------------------------------------------
	@Override
	public synchronized void close()
	{
		super.close();
		if ( database != null )
			database.close();
	}

	// ----------------------------------------------------------------------------------------
//	public List<TrophyBean> selectTrophies( int id )
//	{
//		List<TrophyBean> name = new ArrayList<TrophyBean>();
//
//		Cursor c = database.query( "trophies", null, "id_game = " + id, null,
//				null, null, null );
//		if ( c.getCount() > 0 )
//		{
//			while ( c.moveToNext() )
//			{
//				TrophyBean st = new TrophyBean();
//				st.setName( c.getString( 3 ) );
//				name.add( st );
//			}
//		}
//		return name;
//	}

	// ----------------------------------------------------------------------------------------
//	public List<GameBean> selectGames()
//	{
//		List<GameBean> name = new ArrayList<GameBean>();
//
//		Cursor c = database.query( "games", null, null, null, null, null, null );
//		if ( c.getCount() > 0 )
//		{
//			while ( c.moveToNext() )
//			{
//				GameBean st = new GameBean();
//				st.setName( c.getString( 1 ) );
//				name.add( st );
//			}
//		}
//		return name;
//	}

	// ----------------------------------------------------------------------------------------
//	public GameBean selectGameById( int id )
//	{
//		GameBean bean = new GameBean();
//
//		Cursor c = database.query( "games", null, null, null, null, null, null );
//		if ( c.getCount() > 0 )
//		{
//			c.moveToPosition( id );
//			bean.setId( c.getInt( 0 ) );
//			bean.setName( c.getString( 1 ) );
//			bean.setCategory( c.getString( 2 ) );
//			bean.setYear( c.getString( 3 ) );
//			bean.setPublisher( c.getString( 4 ) );
//		}
//		return bean;
//	}

	// ----------------------------------------------------------------------------------------
//	public TrophyBean selectTrophiesById( int id )
//	{
//		TrophyBean bean = new TrophyBean();
//
//		Cursor c = database.query( "trophies", null, null, null, null, null,
//				null );
//		if ( c.getCount() > 0 )
//		{
//			c.moveToPosition( id );
//			bean.setName( c.getString( 3 ) );
//			bean.setIdGame( c.getInt( 1 ) );
//			bean.setNumber( c.getString( 2 ) );
//			bean.setType( c.getString( 4 ) );
//			bean.setDescription( c.getString( 5 ) );
//			bean.setTip( c.getString( 6 ) );
//		}
//		return bean;
//	}
}